from django.http import HttpResponse

# Create your views here.
from django_redis import get_redis_connection
from rest_framework.views import APIView

from common.captcha.captcha.captcha import captcha
import logging

from common.redis_constants import IMG_CODE_PREFIX
from config.settings import PROJECT_CACHE_NAME

log = logging.getLogger('django')


class ImgCodeView(APIView):
    def get(self, request, uuid):
        # 生成图片验证码
        code, img = captcha.generate_captcha()
        log.error(code)
        # 将图片存储到redis里面, 这里填写setting文件里面的CACHES配置名，会自动读取里面的配置
        redis_cli = get_redis_connection(PROJECT_CACHE_NAME)
        redis_cli.setex(IMG_CODE_PREFIX + uuid, 300, code)
        # 因为图片是二进制 我们不能返回JSON数据
        # content_type=响应体数据类型
        # content_type 的语法形式是： 大类/小类
        # content_type (MIME类型)
        # 图片： image/jpeg , image/gif, image/png
        return HttpResponse(img, content_type="image/jpeg")
